alignof 运算符 您所在的位置:网站首页 align32 和 alignof 运算符

alignof 运算符

2024-05-11 21:16| 来源: 网络整理| 查看: 265

alignof 运算符 项目 04/03/2023

alignof 运算符将指定类型的对齐方式(以字节为单位)作为类型 size_t 的值返回。

语法 alignof( type ) 备注

例如:

表达式 值 alignof( char ) 1 alignof( short ) 2 alignof( int ) 4 alignof( long long ) 8 alignof( float ) 4 alignof( double ) 8

alignof 值与基本类型的 sizeof 的值相同。 但是,请考虑该示例:

typedef struct { int a; double b; } S; // alignof(S) == 8

在该示例中,alignof 值是结构中的最大元素的对齐需求。

同样,

typedef __declspec(align(32)) struct { int a; } S;

alignof(S) 等于 32。

alignof 的用途之一是作为某个内存分配例程的参数。 例如,假定下面定义的结构 S,您可以调用名为 aligned_malloc 的内存分配例程以在特定对齐边界上分配内存。

typedef __declspec(align(32)) struct { int a; double b; } S; int n = 50; // array size S* p = (S*)aligned_malloc(n * sizeof(S), alignof(S));

有关修改对齐方式的详细信息,请参阅:

pack align __unaligned /Zp(结构成员对齐) x64 结构对齐示例

有关 x86 和 x64 代码中的对齐方式的差异的详细信息,请参阅:

与 x86 编译器冲突 Microsoft 专用

alignof 和 __alignof 在 Microsoft 编译器中是同义词。 在 C++11 中成为标准的一部分之前,Microsoft 专用的 __alignof 运算符提供了此功能。 为实现最大的可移植性,应使用 alignof 运算符,而不是 Microsoft 专用的 __alignof 运算符。

为了与以前的版本兼容,除非指定了编译器选项 /Za(禁用语言扩展),否则 _alignof 是 __alignof 的同义词。

另请参阅

使用一元运算符的表达式 关键字



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有